參考->原文
[鐵人賽Day10]PHP簡易分頁實作
物件導向系列
PHP系列
【物件導向】PHP 物件導向 簡易分頁實作
javascript系列
【物件導向】javascript 物件導向概念 API (範例可玩)
物漸導向-基本概念
class 物件
class db{} //db叫作物件
public 公開屬性
class db{
public $host //$host叫作屬性
}
function __construct() 建構式(【成立】物件時要【預先】執行的方法)
class db{
function __construct(){
$this->八雲();
}
function 八雲(){
echo $string = "橙"
return $string;
}
function skill(){
echo $string = "化貓橙"
return $string;
}
}
一般頁面使用方法
new 成立物件
$chen = new db;// $變數 = db類別名稱
$chen->skill();// 印出 化貓橙
物漸導向就這樣。大概吧...?
物件導向概念結束
說明專區
工作流程->資料庫(帳號、密碼、連結的資料庫)
//資料庫連線
class db{
//類別內的變數
public $host = '127.0.0.1'; //架設的網域
public $username = 'daniel'; //資料庫帳號
public $password = '123456'; //資料庫密碼
public $database = 'ch21'; //資料庫
public $result; //公開屬性,function {$this->$result//內存取方式 }
}
//建構式
function __construct(){
$this->sql_connect();
$this->sql_database();
$this->set_db_encode();
}
//設定連線
function sql_connect(){
return @mysql_connect($this->host,$this->username,$this->password);
}
//選擇資料庫
function sql_database(){
return @mysql_select_db($this->database);
}
//選擇資料庫語系
function set_db_encode(){
return mysql_query("SET NAMES 'utf8'");
}
//主要使用方法
function query($sql_string){
$result = mysql_query($sql_string); //$sql_string(自訂的SQL語法),$result = 資料庫的物件
$query = new db_query($result); //進行 資料庫的物件 轉array
$result = $query->result(); //進行object轉array
return $result;
}
//資料庫物件轉陣列
class db_query{
private $result;
function __construct($result){
$this->result = $result;//DB查詢->db_query->$result
}
function result(){
$query = array();
if($this->result != false){
while($row = mysql_fetch_object($this->result)){
$query[] = $row;
}
return $query;
}
return false;
}
}
//頁碼類別
class pages{
public $page_out = false; //測試印出
public $per = 10; //每頁顯示數量
public $data_nums = 0; //總筆數
public $page = 0; //現在頁數
public $pages = 0; //總頁數
function __construct(){
}
function Page($sql_string){
$sql = $sql_string; //自訂的SQL
$result = mysql_query($sql);//資料庫物件
$data_nums = mysql_num_rows($result); //統計總比數
$per = $this->per; //每頁顯示項目數量
$pages = ceil($data_nums/$per); //取得不小於值的下一個整數
/*如果沒有輸入 $_GET["page"] */
if (!isset($_GET["page"])){
$page=1;
} else {
$page = intval($_GET["page"] + 0);
}
$start = ($page-1)*$per; //每一頁開始的資料序號
//Ex
//SELECT * FROM class WHERE 1 LIMIT 0,10
//LIMIT x,y
//x = 開始頁
//y = 顯示數量
$sql = $sql.' LIMIT '.$start.', '.$per;
$result = mysql_query($sql) or die("Error");
//$This
$this->data_nums = $data_nums;
$this->page = $page;
$this->pages = $pages;
$query = new db_query($result);
$result = $query->result();
return $result;
}
};
$Pages = new pages;
其實【頁碼】就是在組合MYSQL字串而已...
說明專區結束
程式碼複製區
下列為程式碼完整部分...可直接複製使用...
採用於PHP物件導向,不影響你的程式碼運作
<?php
/*######DB.php######*/
<?php
//###時區修正
date_default_timezone_set('Asia/Taipei');
//資料庫連線
class db{
public $host = '127.0.0.1';
public $username = 'daniel';
public $password = '123456';
public $database = 'ch21';
public $result;
function __construct(){
$this->sql_connect();
$this->sql_database();
$this->set_db_encode();
}
function sql_connect(){
return @mysql_connect($this->host,$this->username,$this->password);
}
function sql_database(){
return @mysql_select_db($this->database);
}
function set_db_encode(){
return mysql_query("SET NAMES 'utf8'");
}
function query($sql_string){
$result = mysql_query($sql_string);
$query = new db_query($result);
$result = $query->result();
return $result;
}
}
//資料庫物件轉陣列
class db_query{
private $result;
function __construct($result){
$this->result = $result;//DB查詢->db_query->$result
}
function result(){
$query = array();
if($this->result != false){
while($row = mysql_fetch_object($this->result)){
$query[] = $row;
}
return $query;
}
return false;
}
}
$DB = new db;
//頁碼類別
class pages{
public $page_out = false; //測試印出
public $per = 10; //每頁顯示數量
public $data_nums = 0; //總筆數
public $page = 0; //現在頁數
public $pages = 0; //總頁數
function __construct(){
}
function Page($sql_string){
$sql = $sql_string;
$result = mysql_query($sql);
$data_nums = mysql_num_rows($result); //統計總比數
$per = $this->per; //每頁顯示項目數量
$pages = ceil($data_nums/$per); //取得不小於值的下一個整數
if (!isset($_GET["page"])){
$page=1;
} else {
$page = intval($_GET["page"] + 0);
}
$start = ($page-1)*$per; //每一頁開始的資料序號
$sql = $sql.' LIMIT '.$start.', '.$per;
$result = mysql_query($sql) or die("Error");
//$This
$this->data_nums = $data_nums;
$this->page = $page;
$this->pages = $pages;
if(($this->page_out == true)){
//分頁頁碼
echo '共 '.$data_nums.' 筆-在 '.$page.' 頁-共 '.$pages.' 頁';
echo "<br /><a href=?page=1>首頁</a> ";
echo "第 ";
for( $i=1 ; $i<=$pages ; $i++ ) {
if ( $page-3 < $i && $i < $page+3 ) {
echo "<a href=?page=".$i.">".$i."</a> ";
}
}
echo " 頁 <a href=?page=".$pages.">末頁</a><br /><br />";
}
$query = new db_query($result);
$result = $query->result();
return $result;
}
};
$Pages = new pages;
?><?php
//###時區修正
date_default_timezone_set('Asia/Taipei');
//資料庫連線
class db{
public $host = '127.0.0.1';
public $username = 'daniel';
public $password = '123456';
public $database = 'ch21';
public $result;
function __construct(){
$this->sql_connect();
$this->sql_database();
$this->set_db_encode();
}
function sql_connect(){
return @mysql_connect($this->host,$this->username,$this->password);
}
function sql_database(){
return @mysql_select_db($this->database);
}
function set_db_encode(){
return mysql_query("SET NAMES 'utf8'");
}
function query($sql_string){
$result = mysql_query($sql_string);
$query = new db_query($result);
$result = $query->result();
return $result;
}
}
//資料庫物件轉陣列
class db_query{
private $result;
function __construct($result){
$this->result = $result;//DB查詢->db_query->$result
}
function result(){
$query = array();
if($this->result != false){
while($row = mysql_fetch_object($this->result)){
$query[] = $row;
}
return $query;
}
return false;
}
}
$DB = new db;
//頁碼類別
class pages{
public $page_out = false; //測試印出
public $per = 10; //每頁顯示數量
public $data_nums = 0; //總筆數
public $page = 0; //現在頁數
public $pages = 0; //總頁數
function __construct(){
}
function Page($sql_string){
$sql = $sql_string;
$result = mysql_query($sql);
$data_nums = mysql_num_rows($result); //統計總比數
$per = $this->per; //每頁顯示項目數量
$pages = ceil($data_nums/$per); //取得不小於值的下一個整數
if (!isset($_GET["page"])){
$page=1;
} else {
$page = intval($_GET["page"] + 0);
}
$start = ($page-1)*$per; //每一頁開始的資料序號
$sql = $sql.' LIMIT '.$start.', '.$per;
$result = mysql_query($sql) or die("Error");
//$This
$this->data_nums = $data_nums;
$this->page = $page;
$this->pages = $pages;
if(($this->page_out == true)){
//分頁頁碼
echo '共 '.$data_nums.' 筆-在 '.$page.' 頁-共 '.$pages.' 頁';
echo "<br /><a href=?page=1>首頁</a> ";
echo "第 ";
for( $i=1 ; $i<=$pages ; $i++ ) {
if ( $page-3 < $i && $i < $page+3 ) {
echo "<a href=?page=".$i.">".$i."</a> ";
}
}
echo " 頁 <a href=?page=".$pages.">末頁</a><br /><br />";
}
$query = new db_query($result);
$result = $query->result();
return $result;
}
};
$Pages = new pages;
?>
/*######index.php######*/
<?php include("DB.php") ?>
<?php
//自己打SQL語法取法
$SQL = "SELECT * FROM class WHERE 1 LIMIT 0,10 ";
$query = $DB->query($SQL);
foreach($query as $key=>$row){
echo $row->name.'<br/>';
}
echo "-------------------------------".'<br/>';
//頁碼類別取法
$SQL = "SELECT * FROM class WHERE 1";
$Pages->page_out = true ;
$query = $Pages->Page($SQL);
foreach($query as $key=>$row){
echo $row->name.'<br/>';
}
?>
/*###### MYSQL資料庫 ######*/
id name birthday math english history total address_L address_R
1 李大華 1997/3/7 90 94 92 276
2 陳小明 1997/2/1 82 88 90 260
3 劉小珍 1997/8/3 89 87 78 254
4 廖小敏 1997/10/21 75 80 85 240
5 吳大龍 1997/5/17 63 71 68 202